package com.jiangyg.mall.authz.service;

import com.jiangyg.mall.authz.UserInfo;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UserDetailsService;

/**
 * 类描述：后台管理用户信息查询
 *
 * @author jiangyg
 * @date 2022-01-09
 */
public interface AdminAuthenticationService extends UserDetailsService {

    /**
     * 功能描述：根据用户ID查询授权信息
     *
     * @param userId 用户ID
     */
    void loadGrantedAuthorities(String userId);

    /**
     * 功能描述：验证用户是否有权限访问指定地址
     *
     * @param authentication 认证信息
     * @return 是否有权限
     */
    boolean hasAuthorities(Authentication authentication);

    /**
     * 功能描述：判断是否已经退出登录
     *
     * @param user 用户
     * @return 是否
     */
    boolean isLogouted(UserInfo user);

    /**
     * 功能描述：退出登录处理
     * <p>根据令牌的jti标识，生成退出标识缓存</p>
     *
     * @param user 用户信息
     */
    void logout(UserInfo user);

}
